/**
 * 数字前置补零
 * @param num 数字
 * @param length 位数
 * @returns {string}
 */
export function digit(num, length) {
  let str = '';
  num = String(num);
  length = length || 2;
  for (let i = num.length; i < length; i++) {
    str += '0';
  }
  return num < Math.pow(10, length) ? str + (num | 0) : num;
}

/**
 * 生成m到n的随机数
 * @param m 最小值, 包含
 * @param n 最大值, 不包含
 * @returns {number}
 */
export function random(m, n) {
  return Math.floor(Math.random() * (m - n) + n);
}

/**
 * 数字千分位
 * @param num
 * @returns {string}
 */
export function formatNumber(num) {
  return String(num).replace(/(\d{1,3})(?=(\d{3})+(?:$|\.))/g, '$1,');
}

/**
 * 数字保量小数位
 * @param num        待处理数字
 * @param digit      保留位数
 * @param defaultVal 默认值
 * @returns {number}
 */
export function decimalPlaces(num, digit = 2, defaultVal = 0) {
  return digit !== false && (num || Number(num) === 0) ? parseFloat(parseFloat(num).toFixed(digit)) : defaultVal
}

/**
 * 数字转大写
 * @param number
 * @returns {string}
 */
export function convertNumbersToCapitals(number) {
  if (!/^(0|[1-9]\d*)(\.\d+)?$/.test(number)) {
    return number;
  }

  let unit = "千百拾亿千百拾万千百拾元角分", str = "";
  number += "00";
  let index_point = number.indexOf('.');  // 如果是小数，截取小数点前面的位数
  if (index_point >= 0) {
    number = number.substring(0, index_point) + number.substr(index_point + 1, 2);   // 若为小数，截取需要使用的unit单位
  }

  unit = unit.substr(unit.length - number.length);  // 若为整数，截取需要使用的unit单位
  for (let i = 0; i < number.length; i++) {
    str += "零壹贰叁肆伍陆柒捌玖".charAt(number.charAt(i)) + unit.charAt(i);  //遍历转化为大写的数字
  }
  return str.replace(/零([千百拾角])/g, "零").replace(/(零)+/g, "零").replace(/零(万|亿|元)/g, "$1").replace(/(亿)万|壹(拾)/g, "$1$2").replace(/^元零?|零分/g, "").replace(/元$/g, "元整"); // 替换掉数字里面的零字符，得到结果
}
